Method and apparatus for video encoding and decoding based on adaptive coefficient group

ABSTRACT

Various implementations for video encoding and decoding are presented involving determining, for a block being encoded or decoded in a picture, a coefficient group mode for coding at least one coefficient of a set of transform coefficients of the image block; encoding or decoding the set of transform coefficients of the image block responsive to the coefficient group mode. The coefficient group mode can be determined from at least one of image block size, number of non-zero transform coefficients inside the image block, position of a transform coefficient inside the image block, decoded syntax element, wherein the coefficient group mode can specify whether a coefficient group significance flag is coded/decoded, indicating that at least one coefficient is non-zero inside a coefficient group and/or specify at least one size of the coefficient group.

1. TECHNICAL FIELD

A method and an apparatus for coding a video into a bitstream aredisclosed. Corresponding decoding method and apparatus are furtherdisclosed.

2. BACKGROUND ART

In the field of video compression, compression efficiency is always achallenging task.

In existing video coding standards, pictures to be coded are dividedinto regular square blocks or units. Prediction, transformation of errorresidues and quantization are commonly performed on such square units.Quantized transform coefficients are then entropy coded to furtherreduce the bitrate. When it comes to the coding stage of the quantizedtransform coefficients, several schemes have been proposed whereinparsing of the coefficients in the square unit plays an important rolefor optimizing the coding syntax and the information to encode forreconstructing the coefficients.

With the emergence of new video coding schemes, the units used forencoding may not be always a square unit and rectangular units may beused for prediction and transformation. It appears that the classicalparsing schemes defined for square units may no more be appropriate inthe case where rectangular units are used.

Therefore there is a need for a new method for coding and decoding avideo.

3. SUMMARY

According to an aspect of the present disclosure, a method for coding avideo is disclosed. Such a method comprises determining a coefficientgroup mode for coding at least one coefficient of a set of transformcoefficients of the image block; encoding the set of transformcoefficients of the image block the responsive to the coefficient groupmode. The coefficient group mode is determined from at least one of asize of the image block, a number of non-zero transform coefficientsinside the image block, a position of a transform coefficient inside theimage block. The coefficient group mode specifies whether a coefficientgroup significance flag is coded or/and specifies a size of thecoefficient group.

According to another aspect of the present disclosure, an apparatus forcoding a video is disclosed. Such an apparatus comprises means fordetermining a coefficient group mode for coding at least one coefficientof a set of transform coefficients of the image block from at least oneof a size of the image block, a number of non-zero transformcoefficients inside the image block, a position of a transformcoefficient inside the image block; means for encoding the set oftransform coefficients of the image block the responsive to thecoefficient group mode.

According to an aspect of the present disclosure, an apparatus forcoding a video is provided, the apparatus including a processor, and atleast one memory coupled to the processor, the processor beingconfigured to determine a coefficient group mode for coding at least onecoefficient of a set of transform coefficients of the image block fromat least one of a size of the image block, a number of non-zerotransform coefficients inside the image block, a position of a transformcoefficient inside the image block; and to encode the set of transformcoefficients of the image block the responsive to the coefficient groupmode

According to another aspect of the present disclosure, a method fordecoding a video is disclosed. Such a method comprises determining acoefficient group mode for decoding at least one coefficient of a set oftransform coefficients of the image block; decoding the set of transformcoefficients responsive to the coefficient group mode. The coefficientgroup mode is determined from at least one of a size of the image block,a decoded syntax element, a position of a transform coefficient insidethe image block.

According to another aspect of the present disclosure, an apparatus fordecoding a video is disclosed. Such an apparatus comprises means fordetermining a coefficient group mode for decoding at least onecoefficient of a set of transform coefficients of the image block fromat least one of a size of the image block, a decoded syntax element, aposition of a transform coefficient inside the image block; decoding theset of transform coefficients responsive to the coefficient group mode.

According to an aspect of the present disclosure, an apparatus fordecoding a video is provided, the apparatus including a processor, andat least one memory coupled to the processor, the processor beingconfigured to determine a coefficient group mode for decoding at leastone coefficient of a set of transform coefficients of the image blockfrom at least one of a size of the image block, a decoded syntaxelement, a position of a transform coefficient inside the image block;decoding the set of transform coefficients responsive to the coefficientgroup mode.

The present disclosure also concerns a computer program comprisingsoftware code instructions for performing the method for coding ordecoding a video according to any one of the embodiments disclosedbelow, when the computer program is executed by a processor.

The present disclosure also provide a signal comprising video generatedaccording to the method or the apparatus of any of the precedingdescriptions. The present disclosure also provides a computer readablestorage medium having stored thereon a bitstream generated according tothe methods described above. The present disclosure also provide amethod and apparatus for transmitting the bitstream generated accordingto the methods described above. The present embodiments also provide acomputer program product including instructions for performing any ofthe methods described.

The above presents a simplified summary of the subject matter in orderto provide a basic understanding of some aspects of subject matterembodiments. This summary is not an extensive overview of the subjectmatter. It is not intended to identify key/critical elements of theembodiments or to delineate the scope of the subject matter. Its solepurpose is to present some concepts of the subject matter in asimplified form as a prelude to the more detailed description that ispresented later.

Additional features and advantages of the present disclosure will bemade apparent from the following detailed description of illustrativeembodiments which proceeds with reference to the accompanying figures

4. BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a Coding Tree Units and and Coding Tree used forrepresenting a coded picture according to the HEVC standard,

FIG. 2 illustrates scanning orders supported by the HEVC standard in an8×8 Coding Block,

FIG. 3(a) illustrates a scan region,

FIG. 3(b) illustrates an example of scan order in a scan region,

FIG. 4 illustrates a coding method according to a first variant of afirst embodiment of the present disclosure,

FIG. 5 illustrates a coding method according to another variant of afirst embodiment of the present disclosure,

FIG. 6 illustrates a coding method according to a variant of the secondembodiment of the present disclosure,

FIG. 7 illustrates a coding method according to a variant of the thirdembodiment of the present disclosure,

FIG. 8 illustrates adapting CG size for different coding block sizeaccording to a third embodiment of the present disclosure,

FIGS. 9(a) and 9(b) illustrate an example applying several adaptivesizes for a 32×32 coding block according to variants of a fourthembodiment of the present disclosure,

FIG. 10 illustrates an exemplary encoder according to an embodiment ofthe present disclosure,

FIG. 11 illustrates an exemplary decoder according to an embodiment ofthe present disclosure,

FIG. 12 illustrates a block diagram of an example of a system in whichvarious aspects and embodiments are implemented,

FIG. 13 illustrates a decoding method according to an embodiment of thepresent disclosure,

FIG. 14 illustrates a coding method according to an embodiment of thepresent disclosure.

5. DESCRIPTION OF EMBODIMENTS

The technical field of one or more implementations is generally relatedto video compression. At least some embodiments further relate toimproving compression efficiency compared to existing video compressionsystems. At least one embodiment proposes adaptive coefficient group andadaptive coefficient group sizes for transform coefficient coding.

In the HEVC video compression standard, a picture is divided intoso-called Coding Tree Units (CTU), which size is typically 64×64,128×128, or 256×256 pixels. Each CTU is represented by a Coding Unit(CU) in the compressed domain. Each CU is then given some Intra or Interprediction parameters (Prediction Info). To do so, it is spatiallypartitioned into one or more Prediction Units (PUs), each PU beingassigned some prediction information. The Intra or Inter coding mode isassigned on the CU level as shown on FIG. 1 .

After the splitting, intra or inter prediction is used to exploit theintra or inter frame correlation, then the differences between theoriginal block and the predicted block, often denoted as predictionerrors or prediction residuals, are transformed, quantized, and entropycoded. To reconstruct the video, the compressed data are decoded byinverse processes corresponding to the entropy coding, quantization,transform, and prediction.

In HEVC, the quantized transform coefficients of a coding block arecoded using non-overlapped coefficient groups (CGs), and each CGcontains the coefficients of a 4×4 block of a coding block. As anexample, the CGs contained in an 8×8 block are illustrated on FIG. 2 .The CGs inside a coding block, and the 16 transform coefficients withina CG, are scanned and coded according to a scan pattern selected amongthree pre-defined scan orders: diagonal, horizontal, vertical. For interblocks, the diagonal scanning on the left of FIG. 2 is always used,while for 4×4 and 8×8 intra block, the scanning order depends on theIntra Prediction mode active for that block.

At the decoder side, the overall block parsing process includes thefollowing steps:

-   -   1. Decode the Last Significant Coordinate represented by the        following syntax elements: last_sig_coeff_x_prefix,        last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and        last_sig_coeff_y_suffix. This provides the decoder with the        spatial position (x- and y-coordinates) of the last non-zero        coefficients in the whole block.

Then for each successive CG from the CG containing the last significantcoefficient in the coding block to the top-left CG in the coding block,the following steps apply:

-   -   2. Decode the CG significance flag, which is called        coded_sub_block_flag in the HEVC specification. This indicates        at least one coefficient is non-zero inside the CG.    -   3. Decode the significant-coefficient flag for each coefficient        in the considered CG. This corresponds to the syntax element        sig_coeff_flag in the HEVC spec. This indicates which        coefficient is non-zero in the CG.

Next parsing stages aim at the coefficient levels, for coefficientsknown as non-zero in the considered CG. They involve the followingsyntax elements:

-   -   4. coeff_abs_level_greater1_flag: this flag indicates if the        current coefficient's absolute value is higher than 1 or not. If        not, the absolute value is equal to 1.    -   5. cueff_abs_level_greater2_flag: this flag indicates if the        current coefficient's absolute value is higher than 2 or not. If        not, the absolute value is equal to 2.    -   6. coeff_sign_flag: this indicates the sign of the non-zero        coefficients (0: positive, 1: negative).    -   7. coeff_abs_level_remaining: this indicates the absolute value        of the coefficient higher than 2 in absolute value.

All scan passes are decoded for a given CG until all the quantizedcoefficients in that CG can be reconstructed, before processing the nextCG.

The benefit of using CG is to skip coding the transform coefficientswhich are all zeroes in some frequency areas. By setting thecoded_sub_block_flag to 0, which indicates all coefficients inside thisCG are zeroes, bits can be saved, and the coding process can be speededup. However, if most of the transform coefficients inside the codingblock are non-zero, it's costly to code one additionalcoded_sub_block_flag for each 4×4 CG because the value of most flagsis 1. Therefore, at least one embodiment proposes the adaption of usingCG and the CG size. Advantageously, the at least one embodimentefficiently adapts the CG and the CG size in a way that provides goodcompression efficiency (rate distortion performance) together with aminimum complexity increase of the coding design.

Indeed, using CG as for example in HEVC or JVET can save the coding bitsand also the coding time for some frequency areas which only contain thenon-significant transform coefficients. While applying the fixed 4×4 CGsize might not be optimal when most of the transform coefficients aresignificant. Especially the larger resolution videos (4k, 8k and so on)are demanded more and more, the number of larger coding block sizes isrelatively increased, which indicates a lot of coded_sub_block_flagsneed to be signaled if the CG size is fixed as 4×4 in the prior-art.

In the document “Description of SDR, HDR and 360° video codingtechnology proposal considering mobile application scenario by Samsung,Huawei, GoPro, and HiSilicon” (Document JVET-J0024 by E. Alshina et al.,10th Meeting: San Diego, US, 10-20 Apr. 2018), a region to be scanned ina coding block is determined by the scan region information (SRx, SRy),where SRx is most right non-zero coefficients' x-axis and SRy is mostbottom non-zero coefficients' y-axis as depicted in FIG. 3(a). Onlycoefficients in scan region are coded from the right-bottom corner ofthe scan region in inverse zigzag scan order as shown in FIG. 3(b).Accordingly, there is no coded_sub_block_flag to be signaled. However,if most of the transform coefficients inside the scan region are zeroes,it will also remain costly to code these zero coefficients.

Accordingly, a general aspect of at least one embodiment aims to improvethe coding efficicency by adapting CG. This section describes at leastone implementation in detail. In the following, several embodiments thatadapt the CG and the CG size to different conditions and parameters aredescribed. It is organized as follows. First, a general embodiment fordecoding comprising adapting one of the coefficient group CG and thecoefficient group CG size used in transform coefficients decoding aredescribed. Second, a general embodiment for coding comprising adaptingone of the coefficient group CG and the coefficient group CG size usedin transform coefficients encoding are described Thirdly, variousimplementations of a first embodiment comprising adapting thecoefficient group CG and the coefficient group CG size used in transformcoefficients coding to the number of significant coefficients aredescribed. Fourthly, various implementations of a second embodimentcomprising adapting the CG and the CG size used in transformcoefficients coding to the coding block size is disclosed. Then, variousimplementations of a third embodiment comprising adapting the CG and theCG size used in transform coefficients coding to the position of thetransform coefficient are disclosed. Finally, various implementations ofany of the embodiments are described wherein the possible adaptive sizesof CG is pre-defined in the picture or slice header, or directlygenerated by using some syntaxes in the bitstream.

A Decoding Method Comprising Determing a CG Mode

The present principles are advantageously implemented in an decoder inthe entropy decoding module 230 of FIG. 11 . FIG. 13 illustrates anexemplary decoding method 1300 according to a general aspect of at leastone embodiment. In step 1301, at least one a block of an image of thevideo to decode is accessed, The block comprises a set of at least onequantized transform coefficients to decode.

According to an embodiment, step 1310 comprises determining acoefficient group mode. At the decoder, determining the coefficientgroup mode is implicit or explicit.

Thus, according to various embodiments exposed hereafter, depending onthe size of the block, i.e. a number of transform coefficients comprisedin the block, depending a position of a non-zero transform coefficientinside the image block the coefficient group mode is implicitlydetermined at the decoder. Or, according to another embodiment,depending on a decoded syntax element (specifying variant informationand for instance named encode_CG, adaptive_CG_size), the coefficientgroup mode is explicitly determined at the decoder. In a variant,determining a coefficient group mode comprises decoding a syntax element(encode_CG) specifying whether a coefficient group significance flag iscoded. In another variant, determining a coefficient group modecomprises decoding a syntax element (adaptive_CG_size) specifyingwhether a coefficient group significance flag is coded and a size of thecoefficient group. When the coefficient group mode is decoded, itsobtention in the encoder is latter on described with respect to firstand second embodiment.

According to the embodiments described here, whether to code acoefficient group significance flag (named coded_sub_block_flag in HEVC)or the at least one size of the coefficient group when a coefficientgroup significance flag is coded are determined according to any one theembodiments described below.

For example, the size of the coefficient group is determined from thesize of the image block or from a position of a transform coefficientinside the image block as described here after with respect to third andfrouth embodiment in section 4 and 5. For example, the size of thecoefficient group is derived from a division by a power of 2 of the sizeof the block.

According to another example, the CG size is based on the block size.For instance, the CG size is derived by dividing the width of the blockby a power of 2 and dividing the height of the block with another powerof 2.

According to another example, an arrangement of the coefficient groupsof different sizes is based on a position of said at least one transformsubblock in said block. For instance, larger CG size are used for the CGof the low frequency coefficients while smaller CG size are used for theCG of the high frequency coefficients.

According to another example, a scan region is determined, and themethod applies to the scan region instead of the block of the image.

At step 1320, the set of transform coefficients is decoded responsive tothe determined coefficient group mode. According to a variant whereinthe coefficient group mode specifies whether to code a coefficient groupsignificance flag (named coded_sub_block_flag in HEVC), an exemplaryembodidment of the decoding step 1320 is described. For instance, a flagnamed encode_CG is determined is a step 1310 that is set to 1 if acoefficient group significance flag is coded. Then in a step 1321, theflag encode_CG is tested. If encode_GC is set to one (YES), the at oneset of transform coefficients is decoded by group. Then, existing syntaxand decoding process described for CG and used in common videocompression standards can be re-used without necessitating anymodifications. Accordingly, in a step 1322, each successive CG to decodeis accessed. In this variant, the size of CG is 4×4. The skilled in theart will easily adapt to variant the size of the CG varies. Besides, theskilled in the art will understand that the step applies to the CGs inthe block from the CG containing the last significant coefficient in theblock to the top-left CG in the block. In a step 1323, corresponding tostep 2&3 of the previously described decoding standard, the CGsignificance flag coded_sub_block_flag is decoded for the current 4×4CG, more precisely the flag is parsed in the entropy decoder.Thesignificant coefficient flag sig_coeff_flag indicating which coefficientis non-zero in the CG is also decoded. Then, in a test 1324, thenon-zero coefficients sig_coeff_flag in the CG are checked. In a step1325 corresponding to steps 4-7 of the previously described decodingstandard, the non-zero coefficients in the current CG are decoded. Ifall the coefficients in the CG are zero, then this step 1325 isskipped.Then, in a step 1326, it is checked whether all CG blocks havebeen decoded. If NO more CG to decode, the decoding step 1320 ends, elseif YES more CG to decode, the steps 1322, 1323, 1324 and 1326 arerepeated.

If encode_GC is set to zero (NO), the at least one transformcoefficients is not decoded by group. For instance, the at least onetransform coefficients coefficients from the last significantcoefficient in the block to the top-left coefficient in the block aredecoded as described with steps 4-7 of the previously described decodingstandard

At step 1330, it is checked whether all blocks have been decoded. If NOmore block to decode, the decoding ends at step 1340, else if YES moreblock to decode, the steps 1310, 1320, 1330 are repeated.

A Coding Method Comprising Determing a CG Mode

The present principles are advantageously implemented in an encoder inthe entropy coding module 145 of FIG. 10 . FIG. 14 illustrates anexemplary encoding method 1400 according to a general aspect of at leastone embodiment. In step 1401, at least one a block of an image of thevideo to encode is accessed. The block comprises a set of at least onequantized transform coefficients to encode.

According to an embodiment, step 1410 comprises determining acoefficient group mode. At the encoder according to various embodimentsexposed hereafter, depending on the size of the block, i.e. a number oftransform coefficients comprised in the block, depending on a number ofnon-zero transform coefficients inside the image block, depending on aposition of a non-zero transform coefficient inside the image block, thecoefficient group mode is determined.

According to a particular embodiment, the coefficient group mode isencoded for explicit signaling to the decoder. Accordingly variant ofsyntax elements is defined for signaling. In a variant, a syntax element(for instance named enable_CG), coding the coefficient group mode,specifies whether a coefficient group significance flag is coded. Inanother variant, a syntax element (for instance named adaptive_CG_size)specifies whether a coefficient group significance flag is coded and atleast one size of the coefficient group. Variant implementations fordetermining and coding the coefficient group mode is latter on describedwith respect to first and second embodiments in section 3.

According to another particular embodiment, the coefficient group modeis implicitly signaled to the decoder, i.e the decoder determines thecoefficient group mode from available information such as block size orposition of the transform coefficient in the image block. Variantimplementations for determining and coding the coefficient group mode islatter on described with respect to third and fourth embodiments insections 4 and 5.

According to the embodiments described here, whether to code acoefficient group significance flag (named coded_sub_block_flag in HEVC)or the at least one size of the coefficient group when a coefficientgroup significance flag is coded are determined according to any one theembodiments described above for the decoder.

Besides, for example, the coefficient group mode is determined from anumber of non-zero transform coefficients inside the image block.

According to a particular embodiment of coefficient group mode,determining the coefficient group mode comprises obtaining a firstvalue; obtaining the number of non-zero transform coefficients of theimage block and determining to code a coefficient group significanceflag in the case where the number of non-zero transform coefficients ofthe image block is larger than a first value else determining not tocode a coefficient group significance flag.

According to another particular embodiment of coefficient group mode, aplurality (for instance 3 as latter on detailed) first values areobtained and whether to code a coefficient group significance and thesize of the coefficient group are responsive to a comparison between thenumber of non-zero transform coefficients of the image block and theplurality of first number.

According to a variant the first value or at least one first value isdetermined from the size of the image block.

At step 1420, the set of transform coefficients is coded responsive tothe determined coefficient group mode. According to a variant whereinthe coefficient group mode specifies whether to code a coefficient groupsignificance flag (named coded_sub_block_flag in HEVC), an exemplaryembodidment of the encoding step 1420 is described. For instance, a flagnamed encode_CG is determined in a step 1410 that is set to 1 if acoefficient group significance flag is coded according to the previousdetermination. Then in a step 1421, the flag encode_CG is tested. Ifencode_GC is set to one (YES), the at one set of transform coefficientsis coded using coefficient groups. Then, existing syntax and decodingprocess described for CG and used in common video compression standardscan be re-used without necessitating any modifications and is thereverse of the decoding process. Accordingly, in a step 1322, eachsuccessive CG to encode is accessed. In this variant, the size of CG is4×4. The skilled in the art will easily adapt to the variant where thesize of the CG varies. Besides, the skilled in the art will understandthat the encoding step 1420 applies to the CGs in the block from the CGcontaining the last significant coefficient in the block to the top-leftCG in the block in the scanning order. A step 1423 counts the number ofnon-zero coefficient in the current CG. Then at step 1424, the CGsignificance flag coded_sub_block_flag for the current 4×4 CG isdetermined and entropy coded. The significant coefficient flagsig_coeff_flag indicating which coefficient is non-zero in the CG isalso coded. Then, in a test 1425, the non-zero coefficients in the CGare checked. In a step 1426, the non-zero coefficients in the current CGare coded. If all the coefficients in the CG are zero, then this step1426 is skipped. Then, in a step 1327, it is checked whether all CGblocks have been coded. If NO more CG to code, the encoding step 1420ends, else if YES more CG to encode remains, the steps 1422, 1423, 1424,1425 and 1326 are repeated.

If encode_GC is set to zero (NO), the at least one transformcoefficients is not coded using a coefficient group significance flag.For instance, the transform coefficients of the block from the lastsignificant coefficient in the block to the top-left coefficient in theblock are coded following a scanning order.

Optionnaly, in step 1430, the encode_GC of the block is coded andinserted in the bitstream.

At step 1440, it is checked whether all blocks in the image have beencoded. If NO more block to code, the coding ends at step 1450, else ifYES more block to decode, the steps 1401, 1410, 1420, 1340 are repeated.

The above presents a simplified decoding and coding method in order toprovide a basic understanding of some aspects of subject matterembodiments. As such, the encoding and decoding step are not limited tothe above described sub-steps. Additional features, variants andadvantages of the present disclosure will be made apparent from thefollowing detailed description of illustrative embodiments.

Adapting the CG and the CG Size to the Number of SignificantCoefficients

As mentioned in video compression systems, the CG significance flagscoded_sub_block_flag are set for each 4×4 CG from the CG containing thelast significant coefficient in the coding block to the top-left CG inthe coding block. However, if most of the transform coefficients insidethe coding block are significant or in other word if the distribution ofthe significant coefficients is dense in CG of the coding block, it'scostly to code one additional coded_sub_block_flag because the value ofmost flags is 1. While as implemented the previously discussed proposal,there is no coded_sub_block_flag to be signaled. However, if most of thetransform coefficients inside the scan region are zeroes, it will alsobe very costly to code these zero coefficients.

Therefore, a first embodiment comprises adapting the CG and the CG sizeto the number of significant coefficients inside the coding block or thescan region.

To that end, the number of significant coefficients NUM_(nz) isdetermined at the encoder, and then the number of significantcoefficients NUM_(nz) is compared with a given value TH_(sig). TheTH_(sig) value is determined according to the coding block size (width,height), or the scan region size (SRx,SRy). Based on the comparisonresult, the first embodiment comprising determining and signaling oneadditional syntax to the decoder to indicate the usage and the size ofCG.

In a first variant of the first embodiment, the flag encode_CG is set tofalse if the number of significant coefficients NUM_(nz) is larger thanthe corresponding value TH_(sig). Accordingly, there is nocoded_sub_block_flag to be signaled, which indicates all the successivetransform coefficients from the last significant coefficient inside thecoding block, or all the coefficients inside the scan region will becoded. On the contrary, if the number of significant coefficientsNUM_(nz) is lower than or equal to the corresponding value TH_(sig), theflag encode_CG is set to true, and the coded_sub_block_flag for each 4×4CG from the CG containing the last significant coefficient, or from thelast CG inside the scan region, is signaled. The overall process of theresidual coding proposed by the first variant of the first embodiment isdepicted by FIG. 4 , the gray part is to determine signaling the CG ornot.

According to another variant of the first embodiment, the value TH_(sig)is determined based on the size of the coding block or the size of thescan region. One non-limiting example comprises accessing a look-uptable to obtain the TH_(sig) value as a function of the size, moreprecisely, as a function of the area, as shown in Equation 1:

${TH}_{sig} = \left\{ \begin{matrix}0 & {{if}\left( {{area} \leq 16} \right)} \\16 & {{if}\left( {16 < {area} \leq 64} \right)} \\64 & {{if}\left( {64 < {area} \leq 256} \right)} \\256 & {{if}\left( {256 < {area}} \right)}\end{matrix} \right.$

Equation 1: determine TH_(sig) from the coding block area/sizeinformation

where the area is (width*height) or (SRx*SRy).

According to another variant of the first embodiment, the value TH_(sig)is determined based on the percentage or fraction r of the total numberof transform coefficients inside the coding block or the scan region, asshown in Equation 2:

TH_(sig) =r*(width*height)

Equation 2: determine TH_(sig) with the coding block area/sizeinformation

where fraction r is fixed for all coding block size to ½, ¾ . . . asnon-limiting example where fraction r is different based on the codingblock size. As for the previous variant, the coding block size (width,height) can be replaced by the scan region size (SRx, SRy) in Equation2.

According to another variant of the first embodiment, the value TH_(sig)is determined by subtracting the number of transform coefficients insideone CG (16 if the CG size is 4×4) from the total number of transformcoefficients inside the coding block or scan region, as shown inEquation 3:

TH_(sig)=(width*height)−(width_(CG)*height_(CG))

Equation 3: determine TH_(sig) with the coding block size and the CGsize information

where as for the previous variant, the coding block size (width, height)can be replaced by the scan region size (SRx,SRy) in Equation 3.

According to another variant of the first embodiment, the flag encode_CGcan also be decided according to the rate distortion search loop, asillustrated on FIG. 5 .

In a second embodiment, it's similar to the first embodiment: one syntaxnamed adaptive_CG_size is signaled to the decoder to indicate the usageand the size of CG. The difference is this additional syntax is not aflag. According to a particular variant of the embodiment, the value ofadaptive_CG_size can be selected from [0,3]. More values are compatiblewith the present principles.

Same as mentioned in the first embodiment, adaptive_CG_size is set tozero if the number of significant coefficients NUM_(nz) is larger than acorresponding TH_(sig). There is no coded_sub_block_flag to be signed.If the syntax adaptive_CG_size is not zero, coded_sub_block_flag foreach CG from the CG containing the last significant coefficient, or fromthe last CG inside the scan region, is signaled. While the difference isthe size of CG is not fixed as 4×4, but is depended on the value ofadaptive_CG_size, as shown in Equation:

Size_(CG)=2<<adaptive_CG_size

Equation 4: derive adaptive CG size Size_(CG) with the syntaxadaptive_CG_size

Three non-zero adaptive_CG_size ∈[1,3] indicate 3 possible adaptive CGsize Size_(CG) ∈[4×4, 8×8, 16×16]. The value of the adaptive_CG_size isdecided by comparing the number of significant coefficients NUM_(nz) tothree pre-defined thresholds TH_(sig), TH_(sig_1) and TH_(sig_2), asshown in Equation:

${{adaptive\_ CG}{\_ size}} = \left\{ \begin{matrix}0 & {{if}\left( {{NUM}_{nz} > {TH}_{sig}} \right)} \\1 & {{if}\left( {{TH}_{sig} \geq {NUM}_{nz} > {TH}_{{{sig}\_}1}} \right)} \\2 & {{if}\left( {{TH}_{{{sig}\_}1} \geq {NUM}_{nz} > {TH}_{{{sig}\_}2}} \right)} \\3 & {{if}\left( {{TH}_{{{sig}\_}2} \geq {NUM}_{nz}} \right)}\end{matrix} \right.$

Equation 5: determine the value of syntax adaptive_CG_size

The overall process of the residual coding proposed by the secondembodiment is illustrated on FIG. 6 , the gray part is to determine thevalue of adaptive_CG_size.

In a variant of the second embodiment, the possible number ofadaptive_CG_size value can be any integer value which can ensure theSize_(CG) is no larger than the coding block size or the scan regionsize.

In another variant of the second embodiment, the derivation rules ofSize_(CG) as a function of adaptive_CG_size can be different. AndSize_(CG) can also be the rectangular shape to better adapt to therectangular coding blocks.

Adapting the CG Size to the Coding Block Size

As mentioned before, 4k and 8k resolution videos are largely demanded,the number of larger coding block sizes is relatively increased, whichindicates a lot of coded_sub_block_flags need to be signaled if the CGsize is fixed to 4×4. Therefore, an embodiment comprises adapting CGsize to the coding block size.

In a third embodiment, the adaptive size of CG (width_(CG), height_(CG))is derived by dividing the coding block size (width, height) with 2 ^(m)and 2 ^(n), while the minimum adaptive CG size is still 4×4, as shown inEquation 6:

width_(CG)=max(width>>m,4)

height_(CG)=max(height>>n,4)

Equation 6: derive adaptive CG size with the coding block sizeinformation

The adaptive CG size is derived in the same process at the decoder,therefore no additional syntax is needed for this embodiment. FIG. 7depicts the residual coding proposed by a variant of a third embodiment,the gray part is to derive the adaptive CG size.

In a variant, the adaptive CG size can be selected from a set ofpre-defined CG sizes (square or rectangular) by using a look-up table asa function of the coding block size. One non-limiting example to designsuch look-up table as a function of the coding block area is shown inEquation 7:

${Size}_{CG} = \left\{ \begin{matrix}{4 \times 4} & {{if}\left( {{{width}*{height}} \leq 64} \right)} \\{8 \times 8} & {{if}\left( {64 < {{width}*{height}} \leq 256} \right)} \\{16 \times 16} & {{if}\left( {256 < {{width}*{height}}} \right)}\end{matrix} \right.$

Equation 7: Adaptive CG size from a set based on the area/size of thecoding block

Another non-limiting example to design such look-up table as a functionof the minimum dimension among the coding block size (width, height) isshown in Equation 8:

${Size}_{CG} = \left\{ \begin{matrix}{4 \times 4} & {{if}\left( {{\min\left( {{width},{height}} \right)} \leq 8} \right)} \\{8 \times 8} & {{if}\left( {8 < {\min\left( {{width},{height}} \right)} \leq 32} \right)} \\{16 \times 16} & {{if}\left( {32 < {\min\left( {{width},{height}} \right)}} \right)}\end{matrix} \right.$

Equation 8: Adaptive CG size from a set based on the min(width, height)of the coding block

An example of applying adaptive CG size proposed by the third embodimenton different coding block sizes is shown on FIG. 8 .

Adapting the CG Size to the Transform Coefficient Position

In the previously described embodiments, only one adaptive CG size willbe determined and applied for each coding block. In other word, inside acoding block, the CG size remains constant but, the CG size may changefrom a coding block to another one. However, the distribution of thenon-zero transform coefficients is varied from a CG to another CG eveninside the same coding block. As is known, more significant coefficientsare located at low frequency domain compared to high frequency domain.To further enhance the performance of using adaptive CG size, severaladaptive CG sizes can be applied for different frequency domain insideone coding block.

Therefore, an embodiment comprises adapting a plurality of CG sizesinside a coding block to the positions of the transform coefficients,which are located at different frequency domains.

In a variant of the fourth embodiment, larger CG size are defined in lowfrequency domain, and smaller CG size (no smaller than 4×4) are definedin high frequency domain. The adaptive CG size used for low frequencydomain Size_(CG_Lowfreq) can be derived by dividing the minimumdimension of the coding block size (width, height) with 2 ^(m), and theadaptive CG size used for high frequency domain Size_(CG_Highfreq) canbe derived by Size_(CG_Lowfreq) with 2 ^(n) (the minimum adaptive CGsize is still 4×4), as shown in Equation 9:

Size_(CG_Lowfreq)=max(4,min(width,height)>>m)

Size_(CG_Highfreq)=max(,Size_(CG_Lowfreq)>>n)

Equation 9: derive adaptive CG sizes Size_(CG_Lowfreq) andSize_(CG_Highfreq)

An example of such variant of the fourth embodiment applied to a 32×32coding block, with Size_(CG_Lowfreq)=8 and Size_(CG_Highfreq)=4, isdepicted on FIG. 9(a).

In another variant of the fourth embodiment, the smaller adaptive CGsize (no smaller than 4×4) is applied for low frequency domain, whilethe larger CG size is applied in high frequency domain. An example ofsuch variant of the fourth embodiment applied to a 32×32 coding block,with Size_(CG_Lowfreq)=8 and Size_(CG_Highfreq)=4, is illustrated onFIG. 9(b).

In yet another variant of the fourth embodiment, the larger adaptive CGsize Size_(CG_Lowfreq) can only be used for the CG which contains thetop-left DC coefficients. The remaining CGs in other frequency domainswill apply the same smaller adaptive CG size Size_(CG_Highfreq).

In yet another variant of the fourth embodiment, there can be more thanone pair adaptive CG sizes (Size_(CG_Lowfreq), Size_(CG_Highfreq)). Forexample, a middle level adaptive CG size Size_(CG_Midfreq) can also beused for the larger size coding blocks.

Additional Embodiments and Information

This document describes a variety of aspects, including tools, features,embodiments, models, approaches, etc. Many of these aspects aredescribed with specificity and, at least to show the individualcharacteristics, are often described in a manner that may soundlimiting. However, this is for purposes of clarity in description, anddoes not limit the application or scope of those aspects. Indeed, all ofthe different aspects can be combined and interchanged to providefurther aspects. Moreover, the aspects can be combined and interchangedwith aspects described in earlier filings as well.

The aspects described and contemplated in this document can beimplemented in many different forms. FIGS. 10, 11 and 12 below providesome embodiments, but other embodiments are contemplated and thediscussion of FIGS. 10, 11 and 12 does not limit the breadth of theimplementations. At least one of the aspects generally relates to videoencoding and decoding, and at least one other aspect generally relatesto transmitting a bitstream generated or encoded. These and otheraspects can be implemented as a method, an apparatus, a computerreadable storage medium having stored thereon instructions for encodingor decoding video data according to any of the methods described, and/ora computer readable storage medium having stored thereon a bitstreamgenerated according to any of the methods described.

In the present application, the terms “reconstructed” and “decoded” maybe used interchangeably, the terms “pixel” and “sample” may be usedinterchangeably, the terms “image,” “picture” and “frame” may be usedinterchangeably. Usually, but not necessarily, the term “reconstructed”is used at the encoder side while “decoded” is used at the decoder side.

The terms HDR (high dynamic range) and SDR (standard dynamic range) areused in this disclosure. Those terms often convey specific values ofdynamic range to those of ordinary skill in the art. However, additionalembodiments are also intended in which a reference to HDR is understoodto mean “higher dynamic range” and a reference to SDR is understood tomean “lower dynamic range”. Such additional embodiments are notconstrained by any specific values of dynamic range that might often beassociated with the terms “high dynamic range” and “standard dynamicrange”.

Various methods are described herein, and each of the methods comprisesone or more steps or actions for achieving the described method. Unlessa specific order of steps or actions is required for proper operation ofthe method, the order and/or use of specific steps and/or actions may bemodified or combined.

Various methods and other aspects described in this document can be usedto modify modules, for example, the entropy coding, and/or entropydecoding modules (145, 230), of a video encoder 100 and decoder 200 asshown in FIG. 10 and FIG. 11 . Moreover, the present aspects are notlimited to VVC or HEVC, and can be applied, for example, to otherstandards and recommendations, whether pre-existing or future-developed,and extensions of any such standards and recommendations (including VVCand HEVC). Unless indicated otherwise, or technically precluded, theaspects described in this document can be used individually or incombination.

Various numeric values are used in the present document, for example,the value for adaptive CG size [0:3], the different look up tables,considered coding block size. The specific values are for examplepurposes and the aspects described are not limited to these specificvalues.

FIG. 10 illustrates an encoder 100. Variations of this encoder 100 arecontemplated, but the encoder 100 is described below for purposes ofclarity without describing all expected variations.

Before being encoded, the video sequence may go through pre-encodingprocessing (101), for example, applying a color transform to the inputcolor picture (e.g., conversion from RGB 4:4:4 to YCbCr 4:2:0), orperforming a remapping of the input picture components in order to get asignal distribution more resilient to compression (for instance using ahistogram equalization of one of the color components). Metadata can beassociated with the pre-processing, and attached to the bitstream.

In the encoder 100, a picture is encoded by the encoder elements asdescribed below. The picture to be encoded is partitioned (102) andprocessed in units of, for example, CUs. Each unit is encoded using, forexample, either an intra or inter mode. When a unit is encoded in anintra mode, it performs intra prediction (160). In an inter mode, motionestimation (175) and compensation (170) are performed. The encoderdecides (105) which one of the intra mode or inter mode to use forencoding the unit, and indicates the intra/inter decision by, forexample, a prediction mode flag. Prediction residuals are calculated,for example, by subtracting (110) the predicted block from the originalimage block.

The prediction residuals are then transformed (125) and quantized (130).The quantized transform coefficients, as well as motion vectors andother syntax elements, are entropy coded (145) to output a bitstream.The encoder can skip the transform and apply quantization directly tothe non-transformed residual signal. The encoder can bypass bothtransform and quantization, i.e., the residual is coded directly withoutthe application of the transform or quantization processes.

The encoder decodes an encoded block to provide a reference for furtherpredictions. The quantized transform coefficients are de-quantized (140)and inverse transformed (150) to decode prediction residuals. Combining(155) the decoded prediction residuals and the predicted block, an imageblock is reconstructed. In-loop filters (165) are applied to thereconstructed picture to perform, for example, deblocking/SAO (SampleAdaptive Offset) filtering to reduce encoding artifacts. The filteredimage is stored at a reference picture buffer (180).

FIG. 11 illustrates a block diagram of a video decoder 200. In thedecoder 200, a bitstream is decoded by the decoder elements as describedbelow. Video decoder 200 generally performs a decoding pass reciprocalto the encoding pass as described in FIG. 10 . The encoder 100 alsogenerally performs video decoding as part of encoding video data.

In particular, the input of the decoder includes a video bitstream,which can be generated by video encoder 100. The bitstream is firstentropy decoded (230) to obtain transform coefficients, motion vectors,and other coded information. The picture partition information indicateshow the picture is partitioned. The decoder may therefore divide (235)the picture according to the decoded picture partitioning information.The transform coefficients are de-quantized (240) and inversetransformed (250) to decode the prediction residuals. Combining (255)the decoded prediction residuals and the predicted block, an image blockis reconstructed. The predicted block can be obtained (270) from intraprediction (260) or motion-compensated prediction (i.e., interprediction) (275). In-loop filters (265) are applied to thereconstructed image. The filtered image is stored at a reference picturebuffer (280).

The decoded picture can further go through post-decoding processing(285), for example, an inverse color transform (e.g. conversion fromYCbCr 4:2:0 to RGB 4:4:4) or an inverse remapping performing the inverseof the remapping process performed in the pre-encoding processing (101).The post-decoding processing can use metadata derived in thepre-encoding processing and signaled in the bitstream.

FIG. 12 illustrates a block diagram of an example of a system in whichvarious aspects and embodiments are implemented. System 1000 can beembodied as a device including the various components described belowand is configured to perform one or more of the aspects described inthis document. Examples of such devices, include, but are not limitedto, various electronic devices such as personal computers, laptopcomputers, smartphones, tablet computers, digital multimedia set topboxes, digital television receivers, personal video recording systems,connected home appliances, and servers. Elements of system 1000, singlyor in combination, can be embodied in a single integrated circuit,multiple ICs, and/or discrete components. For example, in at least oneembodiment, the processing and encoder/decoder elements of system 1000are distributed across multiple ICs and/or discrete components. Invarious embodiments, the system 1000 is communicatively coupled to othersimilar systems, or to other electronic devices, via, for example, acommunications bus or through dedicated input and/or output ports. Invarious embodiments, the system 1000 is configured to implement one ormore of the aspects described in this document.

The system 1000 includes at least one processor 1010 configured toexecute instructions loaded therein for implementing, for example, thevarious aspects described in this document. Processor 1010 can includeembedded memory, input output interface, and various other circuitriesas known in the art. The system 1000 includes at least one memory 1020(e.g., a volatile memory device, and/or a non-volatile memory device).System 1000 includes a storage device 1040, which can includenon-volatile memory and/or volatile memory, including, but not limitedto, EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, magnetic disk drive,and/or optical disk drive. The storage device 1040 can include aninternal storage device, an attached storage device, and/or a networkaccessible storage device, as non-limiting examples.

System 1000 includes an encoder/decoder module 1030 configured, forexample, to process data to provide an encoded video or decoded video,and the encoder/decoder module 1030 can include its own processor andmemory. The encoder/decoder module 1030 represents module(s) that can beincluded in a device to perform the encoding and/or decoding functions.As is known, a device can include one or both of the encoding anddecoding modules. Additionally, encoder/decoder module 1030 can beimplemented as a separate element of system 1000 or can be incorporatedwithin processor 1010 as a combination of hardware and software as knownto those skilled in the art.

Program code to be loaded onto processor 1010 or encoder/decoder 1030 toperform the various aspects described in this document can be stored instorage device 1040 and subsequently loaded onto memory 1020 forexecution by processor 1010. In accordance with various embodiments, oneor more of processor 1010, memory 1020, storage device 1040, andencoder/decoder module 1030 can store one or more of various itemsduring the performance of the processes described in this document. Suchstored items can include, but are not limited to, the input video, thedecoded video or portions of the decoded video, the bitstream, matrices,variables, and intermediate or final results from the processing ofequations, formulas, operations, and operational logic.

In several embodiments, memory inside of the processor 1010 and/or theencoder/decoder module 1030 is used to store instructions and to provideworking memory for processing that is needed during encoding ordecoding. In other embodiments, however, a memory external to theprocessing device (for example, the processing device can be either theprocessor 1010 or the encoder/decoder module 1030) is used for one ormore of these functions. The external memory can be the memory 1020and/or the storage device 1040, for example, a dynamic volatile memoryand/or a non-volatile flash memory. In several embodiments, an externalnon-volatile flash memory is used to store the operating system of atelevision. In at least one embodiment, a fast external dynamic volatilememory such as a RAM is used as working memory for video coding anddecoding operations, such as for MPEG-2, HEVC, or VVC (Versatile VideoCoding).

The input to the elements of system 1000 can be provided through variousinput devices as indicated in block 1130. Such input devices include,but are not limited to, (i) an RF portion that receives an RF signaltransmitted, for example, over the air by a broadcaster, (ii) aComposite input terminal, (iii) a USB input terminal, and/or (iv) anHDMI input terminal.

In various embodiments, the input devices of block 1130 have associatedrespective input processing elements as known in the art. For example,the RF portion can be associated with elements necessary for (i)selecting a desired frequency (also referred to as selecting a signal,or band-limiting a signal to a band of frequencies), (ii) downconvertingthe selected signal, (iii) band-limiting again to a narrower band offrequencies to select (for example) a signal frequency band which can bereferred to as a channel in certain embodiments, (iv) demodulating thedownconverted and band-limited signal, (v) performing error correction,and (vi) demultiplexing to select the desired stream of data packets.The RF portion of various embodiments includes one or more elements toperform these functions, for example, frequency selectors, signalselectors, band-limiters, channel selectors, filters, downconverters,demodulators, error correctors, and demultiplexers. The RF portion caninclude a tuner that performs various of these functions, including, forexample, downconverting the received signal to a lower frequency (forexample, an intermediate frequency or a near-baseband frequency) or tobaseband. In one set-top box embodiment, the RF portion and itsassociated input processing element receives an RF signal transmittedover a wired (for example, cable) medium, and performs frequencyselection by filtering, downconverting, and filtering again to a desiredfrequency band. Various embodiments rearrange the order of theabove-described (and other) elements, remove some of these elements,and/or add other elements performing similar or different functions.Adding elements can include inserting elements in between existingelements, for example, inserting amplifiers and an analog-to-digitalconverter. In various embodiments, the RF portion includes an antenna.

Additionally, the USB and/or HDMI terminals can include respectiveinterface processors for connecting system 1000 to other electronicdevices across USB and/or HDMI connections. It is to be understood thatvarious aspects of input processing, for example, Reed-Solomon errorcorrection, can be implemented, for example, within a separate inputprocessing IC or within processor 1010 as necessary. Similarly, aspectsof USB or HDMI interface processing can be implemented within separateinterface ICs or within processor 1010 as necessary. The demodulated,error corrected, and demultiplexed stream is provided to variousprocessing elements, including, for example, processor 1010, andencoder/decoder 1030 operating in combination with the memory andstorage elements to process the datastream as necessary for presentationon an output device.

Various elements of system 1000 can be provided within an integratedhousing, Within the integrated housing, the various elements can beinterconnected and transmit data therebetween using suitable connectionarrangement 1140, for example, an internal bus as known in the art,including the I2C bus, wiring, and printed circuit boards.

The system 1000 includes communication interface 1050 that enablescommunication with other devices via communication channel 1060. Thecommunication interface 1050 can include, but is not limited to, atransceiver configured to transmit and to receive data overcommunication channel 1060. The communication interface 1050 caninclude, but is not limited to, a modem or network card and thecommunication channel 1060 can be implemented, for example, within awired and/or a wireless medium.

Data is streamed to the system 1000, in various embodiments, using aWi-Fi network such as IEEE 802.11. The Wi-Fi signal of these embodimentsis received over the communications channel 1060 and the communicationsinterface 1050 which are adapted for Wi-Fi communications. Thecommunications channel 1060 of these embodiments is typically connectedto an access point or router that provides access to outside networksincluding the Internet for allowing streaming applications and otherover-the-top communications. Other embodiments provide streamed data tothe system 1000 using a set-top box that delivers the data over the HDMIconnection of the input block 1130. Still other embodiments providestreamed data to the system 1000 using the RF connection of the inputblock 1130.

The system 1000 can provide an output signal to various output devices,including a display 1100, speakers 1110, and other peripheral devices1120. The other peripheral devices 1120 include, in various examples ofembodiments, one or more of a stand-alone DVR, a disk player, a stereosystem, a lighting system, and other devices that provide a functionbased on the output of the system 1000. In various embodiments, controlsignals are communicated between the system 1000 and the display 1100,speakers 1110, or other peripheral devices 1120 using signaling such asAV.Link, CEC, or other communications protocols that enabledevice-to-device control with or without user intervention. The outputdevices can be communicatively coupled to system 1000 via dedicatedconnections through respective interfaces 1070, 1080, and 1090.Alternatively, the output devices can be connected to system 1000 usingthe communications channel 1060 via the communications interface 1050.The display 1100 and speakers 1110 can be integrated in a single unitwith the other components of system 1000 in an electronic device, forexample, a television. In various embodiments, the display interface1070 includes a display driver, for example, a timing controller (T Con)chip.

The display 1100 and speaker 1110 can alternatively be separate from oneor more of the other components, for example, if the RF portion of input1130 is part of a separate set-top box. In various embodiments in whichthe display 1100 and speakers 1110 are external components, the outputsignal can be provided via dedicated output connections, including, forexample, HDMI ports, USB ports, or COMP outputs.

The embodiments can be carried out by computer software implemented bythe processor 1010 or by hardware, or by a combination of hardware andsoftware. As a non-limiting example, the embodiments can be implementedby one or more integrated circuits. The memory 1020 can be of any typeappropriate to the technical environment and can be implemented usingany appropriate data storage technology, such as optical memory devices,magnetic memory devices, semiconductor-based memory devices, fixedmemory, and removable memory, as non-limiting examples. The processor1010 can be of any type appropriate to the technical environment, andcan encompass one or more of microprocessors, general purpose computers,special purpose computers, and processors based on a multi-corearchitecture, as non-limiting examples.

Various implementations involve decoding. “Decoding”, as used in thisapplication, can encompass all or part of the processes performed, forexample, on a received encoded sequence in order to produce a finaloutput suitable for display. In various embodiments, such processesinclude one or more of the processes typically performed by a decoder,for example, entropy decoding, inverse quantization, inversetransformation, and differential decoding. In various embodiments, suchprocesses also, or alternatively, include processes performed by adecoder of various implementations described in this application, forexample, determining a coefficient group mode for decoding, bycoefficient group, at least one coefficient of a set of transformcoefficients of the image block; decoding the set of transformcoefficients of the image block the responsive to the coefficient groupmode; wherein the coefficient group mode is determined from at least oneof a size of the image block, a decoded syntax element, a position of asignificant transform coefficient of the image block.

As further examples, in one embodiment “decoding” refers only to entropydecoding, in another embodiment “decoding” refers only to differentialdecoding, and in another embodiment “decoding” refers to a combinationof entropy decoding and differential decoding. Whether the phrase“decoding process” is intended to refer specifically to a subset ofoperations or generally to the broader decoding process will be clearbased on the context of the specific descriptions and is believed to bewell understood by those skilled in the art.

Various implementations involve encoding. In an analogous way to theabove discussion about “decoding”, “encoding” as used in thisapplication can encompass all or part of the processes performed, forexample, on an input video sequence in order to produce an encodedbitstream. In various embodiments, such processes include one or more ofthe processes typically performed by an encoder, for example,partitioning, differential encoding, transformation, quantization, andentropy encoding. In various embodiments, such processes also, oralternatively, include processes performed by an encoder of variousimplementations described in this application, for example, determininga coefficient group mode for coding, by coefficient group, at least onecoefficient of a set of transform coefficients of the image block;encoding the set of transform coefficients of the image block theresponsive to the coefficient group mode; wherein the coefficient groupmode is determined from at least one of a size of the image block, anumber of significant transform coefficients of the image block, aposition of a significant transform coefficient of the image block.

As further examples, in one embodiment “encoding” refers only to entropyencoding, in another embodiment “encoding” refers only to differentialencoding, and in another embodiment “encoding” refers to a combinationof differential encoding and entropy encoding. Whether the phrase“encoding process” is intended to refer specifically to a subset ofoperations or generally to the broader encoding process will be clearbased on the context of the specific descriptions and is believed to bewell understood by those skilled in the art.

Note that the syntax elements as used herein, for example,encode_(CG),adaptive_CG_size, are descriptive terms. As such, they donot preclude the use of other syntax element names.

When a figure is presented as a flow diagram, it should be understoodthat it also provides a block diagram of a corresponding apparatus.Similarly, when a figure is presented as a block diagram, it should beunderstood that it also provides a flow diagram of a correspondingmethod/process.

Various embodiments refer to rate distortion optimization. Inparticular, during the encoding process, the balance or trade-offbetween the rate and distortion is usually considered, often given theconstraints of computational complexity. The rate distortionoptimization is usually formulated as minimizing a rate distortionfunction, which is a weighted sum of the rate and of the distortion.There are different approaches to solve the rate distortion optimizationproblem. For example, the approaches may be based on an extensivetesting of all encoding options, including all considered modes orcoding parameters values, with a complete evaluation of their codingcost and related distortion of the reconstructed signal after coding anddecoding. Faster approaches may also be used, to save encodingcomplexity, in particular with computation of an approximated distortionbased on the prediction or the prediction residual signal, not thereconstructed one. Mix of these two approaches can also be used, such asby using an approximated distortion for only some of the possibleencoding options, and a complete distortion for other encoding options.Other approaches only evaluate a subset of the possible encodingoptions. More generally, many approaches employ any of a variety oftechniques to perform the optimization, but the optimization is notnecessarily a complete evaluation of both the coding cost and relateddistortion.

The implementations and aspects described herein can be implemented in,for example, a method or a process, an apparatus, a software program, adata stream, or a signal. Even if only discussed in the context of asingle form of implementation (for example, discussed only as a method),the implementation of features discussed can also be implemented inother forms (for example, an apparatus or program). An apparatus can beimplemented in, for example, appropriate hardware, software, andfirmware. The methods can be implemented in, for example, a processor,which refers to processing devices in general, including, for example, acomputer, a microprocessor, an integrated circuit, or a programmablelogic device. Processors also include communication devices, such as,for example, computers, cell phones, portable/personal digitalassistants (“PDAs”), and other devices that facilitate communication ofinformation between end-users.

Reference to “one embodiment” or “an embodiment” or “one implementation”or “an implementation”, as well as other variations thereof, means thata particular feature, structure, characteristic, and so forth describedin connection with the embodiment is included in at least oneembodiment. Thus, the appearances of the phrase “in one embodiment” or“in an embodiment” or “in one implementation” or “in an implementation”,as well any other variations, appearing in various places throughoutthis document are not necessarily all referring to the same embodiment.

Additionally, this document may refer to “determining” various pieces ofinformation. Determining the information can include one or more of, forexample, estimating the information, calculating the information,predicting the information, or retrieving the information from memory.

Further, this document may refer to “accessing” various pieces ofinformation. Accessing the information can include one or more of, forexample, receiving the information, retrieving the information (forexample, from memory), storing the information, moving the information,copying the information, calculating the information, determining theinformation, predicting the information, or estimating the information.

Additionally, this document may refer to “receiving” various pieces ofinformation. Receiving is, as with “accessing”, intended to be a broadterm. Receiving the information can include one or more of, for example,accessing the information, or retrieving the information (for example,from memory). Further, “receiving” is typically involved, in one way oranother, during operations such as, for example, storing theinformation, processing the information, transmitting the information,moving the information, copying the information, erasing theinformation, calculating the information, determining the information,predicting the information, or estimating the information.

It is to be appreciated that the use of any of the following “/”,“and/or”, and “at least one of”, for example, in the cases of “A/B”, “Aand/or B” and “at least one of A and B”, is intended to encompass theselection of the first listed option (A) only, or the selection of thesecond listed option (B) only, or the selection of both options (A andB). As a further example, in the cases of “A, B, and/or C” and “at leastone of A, B, and C”, such phrasing is intended to encompass theselection of the first listed option (A) only, or the selection of thesecond listed option (B) only, or the selection of the third listedoption (C) only, or the selection of the first and the second listedoptions (A and B) only, or the selection of the first and third listedoptions (A and C) only, or the selection of the second and third listedoptions (B and C) only, or the selection of all three options (A and Band C). This may be extended, as is clear to one of ordinary skill inthis and related arts, for as many items as are listed.

Also, as used herein, the word “signal” refers to, among other things,indicating something to a corresponding decoder. For example, in certainembodiments the encoder signals a particular one coefficient group modeof a plurality of parameters or syntax elements such asencode_(CG),adaptive_CG_size. In this way, in an embodiment the sameparameter is used at both the encoder side and the decoder side. Thus,for example, an encoder can transmit (explicit signaling) a particularparameter to the decoder so that the decoder can use the same particularparameter. Conversely, if the decoder already has the particularparameter as well as others, then signaling can be used withouttransmitting (implicit signaling) to simply allow the decoder to knowand select the particular parameter. By avoiding transmission of anyactual functions, a bit savings is realized in various embodiments. Itis to be appreciated that signaling can be accomplished in a variety ofways. For example, one or more syntax elements, flags, and so forth areused to signal information to a corresponding decoder in variousembodiments. While the preceding relates to the verb form of the word“signal”, the word “signal” can also be used herein as a noun.

As will be evident to one of ordinary skill in the art, implementationscan produce a variety of signals formatted to carry information that canbe, for example, stored or transmitted. The information can include, forexample, instructions for performing a method, or data produced by oneof the described implementations. For example, a signal can be formattedto carry the bitstream of a described embodiment. Such a signal can beformatted, for example, as an electromagnetic wave (for example, using aradio frequency portion of spectrum) or as a baseband signal. Theformatting can include, for example, encoding a data stream andmodulating a carrier with the encoded data stream. The information thatthe signal carries can be, for example, analog or digital information.The signal can be transmitted over a variety of different wired orwireless links, as is known. The signal can be stored on aprocessor-readable medium.

We have described a number of embodiments. These embodiments provide, atleast, for the following generalized inventions and claims, includingall combinations, across various different claim categories and types:

-   -   A coding method for encoding a block of an image comprising        determining a coefficient group mode for coding at least one        coefficient of a set of transform coefficients of the image        block; encoding the set of transform coefficients of the image        block the responsive to the coefficient group mode; wherein the        coefficient group mode is determined from at least one of a size        of the image block, a number of significant transform        coefficients of the image block, a position of a transform        coefficient of the image block;    -   A decoding method for decoding a block of an image comprising        determining a coefficient group mode for decoding at least one        coefficient of a set of transform coefficients of the image        block; decoding the set of transform coefficients responsive to        the coefficient group mode, wherein the coefficient group mode        is determined from at least one of a size of the image block, a        position of a transform coefficient of the image block, a        decoded syntax element.    -   A coding/decoding method wherein the coefficient group mode        specifies whether a coefficient group significance flag is        coded, said coefficient group significance indicating that at        least one coefficient is non-zero inside a coefficient group        comprising at least one coefficient of the set of transform        coefficients of the image block.    -   A coding/decoding method wherein the coefficient group mode        specifies whether a coefficient group significance flag is        coded, said coefficient group significance flag indicating that        at least one coefficient is non-zero inside a coefficient group        comprising at least one coefficient of the set of transform        coefficients of the image block and specifies at least one size        of the coefficient group.    -   A coding/decoding method wherein the coefficient group mode        specifies a size of a coefficient group for coding a coefficient        group significance flag, said coefficient group significance        indicating that at least one coefficient is non-zero inside a        coefficient group comprising at least one coefficient of the set        of transform coefficients of the image block.    -   A coding method wherein encoding the set of transform        coefficients of the image block the responsive to the        coefficient group mode comprises, if the coefficient group mode        specifies to code the coefficient group significant flag,        determining a number of non-zero transform coefficients inside a        current coefficient group of the image block; determining the        coefficient group significance flag for the current coefficient        group and, in case the number of non-zero transform coefficients        inside a current coefficient group is not null, coding the at        least one coefficient of the current coefficient group; else if        the coefficient group mode specifies not to code the coefficient        group significant flag, encoding the at least one transform        coefficients of the image block.    -   A coding method wherein determining the coefficient group mode        comprises obtaining a first value, obtaining the number of        significant transform coefficients of the image block; wherein        the coefficient group mode specifies that a coefficient group        significance flag is coded in the case where the number of        significant transform coefficients of the image block is larger        than the first value.    -   A coding method wherein determining the coefficient group mode        comprises obtaining at least one first value; obtaining the        number of significant transform coefficients of the image block;        the coefficient group mode specifying to code a coefficient        group significance flag and the at least one size of the        coefficient group is responsive to a comparison between the        number of non-zero transform coefficients of the image block and        the at least one first number of significant coefficient.    -   Determining the first value from the size of the image block.    -   Determining a scan region, and applying to coding/decoding        method to the scan region instead of the block of the image.    -   A coding/decoding method comprising encoding/decoding the        coefficient group mode    -   A decoding method, wherein determining said the coefficient        group mode comprises decoding a syntax element (encode_CG,        adaptive_CG_size) specifying that a coefficient group        significance flag is coded or specifying at least one size of        the coefficient group.    -   A coding/decoding method applied for large coding block size        (32×32, 64×64 . . . ).    -   A coding/decoding method applied for Luma component.    -   A coding/decoding method applied for Chroma components.    -   A coding/decoding method applied for Inter-coded blocks.    -   A coding/decoding method applied for Intra-coded blocks.    -   A coding/decoding method applied for some transform types.    -   A bitstream or signal that includes one or more of the described        syntax elements, or variations thereof.    -   Inserting in the signaling syntax elements that enable the        decoder to adapt CG in a manner corresponding to that used by an        encoder.    -   Creating and/or transmitting and/or receiving and/or decoding a        bitstream or signal that includes one or more of the described        syntax elements, or variations thereof.    -   A TV, set-top box, cell phone, tablet, or other electronic        device that performs adaptation of CG according to any of the        embodiments described.    -   A TV, set-top box, cell phone, tablet, or other electronic        device that performs adaptation of CG according to any of the        embodiments described, and that displays (e.g. using a monitor,        screen, or other type of display) a resulting image.    -   A TV, set-top box, cell phone, tablet, or other electronic        device that tunes (e.g. using a tuner) a channel to receive a        signal including an encoded image, and performs adaptation of CG        according to any of the embodiments described.    -   A TV, set-top box, cell phone, tablet, or other electronic        device that receives (e.g. using an antenna) a signal over the        air that includes an encoded image, and performs adaptation of        filter parameters according to any of the embodiments described.

Various other generalized, as well as particularized, inventions andclaims are also supported and contemplated throughout this disclosure.

1-16. (canceled)
 17. A method comprising: obtaining a coding block,wherein the coding block comprises a first coefficient group associatedwith a first set of transform coefficients for the coding block and asecond coefficient group associated with a second set of transformcoefficients for the coding block; obtaining a first coefficient groupsize for the first coefficient group based on a first position for thefirst coefficient group; obtaining a second coefficient group size forthe second coefficient group based on a second position for the secondcoefficient group; and decoding the coding block based on the obtainedfirst coefficient group size and the obtained second coefficient groupsize.
 18. The method of claim 17, wherein the first position isassociated with a high frequency domain and the second position isassociated with a low frequency domain, wherein the first coefficientgroup size is larger than the second coefficient group size, and whereinthe second coefficient group size is greater than or equal to 4×4. 19.The method of claim 17, wherein the first position is located in the topleft portion of the coding block and the second position is located inthe bottom right portion of the coding block.
 20. The method of claim17, wherein the coding block comprises a third coefficient groupassociated with a third set of transform coefficients for the codingblock, and wherein the method comprises: obtaining a third coefficientgroup size for the third coefficient group based on a third position forthe third coefficient group, wherein the third position is locatedbetween the first position and the second position; and decoding thecoding block based on the obtained first coefficient group size, theobtained second coefficient group size, and the obtained thirdcoefficient group size.
 21. The method of claim 17, wherein the firstposition is associated with a low frequency domain and the secondposition is associated with a high frequency domain, wherein the secondcoefficient group size is larger than the first coefficient group size,and wherein the first coefficient group size is greater than or equal to4×4.
 22. A device comprising: a processor configured to: obtain a codingblock, wherein the coding block comprises a first coefficient groupassociated with a first set of transform coefficients for the codingblock and a second coefficient group associated with a second set oftransform coefficients for the coding block; obtain a first coefficientgroup size for the first coefficient group based on a first position forthe first coefficient group; obtain a second coefficient group size forthe second coefficient group based on a second position for the secondcoefficient group; and decode the coding block based on the obtainedfirst coefficient group size and the obtained second coefficient groupsize.
 23. The device of claim 22, wherein the first position isassociated with a high frequency domain and the second position isassociated with a low frequency domain, wherein the first coefficientgroup size is larger than the second coefficient group size, and whereinthe second coefficient group size is greater than or equal to 4×4. 24.The device of claim 22, wherein the first position is located in the topleft portion of the coding block and the second position is located inthe bottom right portion of the coding block.
 25. The device of claim22, wherein the coding block comprises a third coefficient groupassociated with a third set of transform coefficients for the codingblock, and wherein the processor is configured to: obtain a thirdcoefficient group size for the third coefficient group based on a thirdposition for the third coefficient group, wherein the third position islocated between the first position and the second position; and decodethe coding block based on the obtained first coefficient group size, theobtained second coefficient group size, and the obtained thirdcoefficient group size.
 26. The device of claim 22, wherein the firstposition is associated with a low frequency domain and the secondposition is associated with a high frequency domain, wherein the secondcoefficient group size is larger than the first coefficient group size,and wherein the first coefficient group size is greater than or equal to4×4.
 27. A method comprising: obtaining a coding block, wherein thecoding block comprises a first coefficient group associated with a firstset of transform coefficients for the coding block and a secondcoefficient group associated with a second set of transform coefficientsfor the coding block; determining a first coefficient group size for thefirst coefficient group based on a first position for the firstcoefficient group; determining a second coefficient group size for thesecond coefficient group based on a second position for the secondcoefficient group; and including the determined first coefficient groupsize and the determined second coefficient group size in video data toencode the coding block.
 28. The method of claim 27, wherein the firstposition is associated with a high frequency domain and the secondposition is associated with a low frequency domain, wherein the firstcoefficient group size is larger than the second coefficient group size,and wherein the second coefficient group size is greater than or equalto 4×4.
 29. The method of claim 27, wherein the first position islocated in the top left portion of the coding block and the secondposition is located in the bottom right portion of the coding block. 30.The method of claim 27, wherein the coding block comprises a thirdcoefficient group associated with a third set of transform coefficientsfor the coding block, and wherein the method comprises: obtaining athird coefficient group size for the third coefficient group based on athird position for the third coefficient group, wherein the thirdposition is located between the first position and the second position;and including the determined third coefficient group size to encode thecoding block.
 31. The method of claim 27, wherein the first position isassociated with a low frequency domain and the second position isassociated with a high frequency domain, wherein the second coefficientgroup size is larger than the first coefficient group size, and whereinthe first coefficient group size is greater than or equal to 4×4.
 32. Adevice comprising: a processor configured to: obtain a coding block,wherein the coding block comprises a first coefficient group associatedwith a first set of transform coefficients for the coding block and asecond coefficient group associated with a second set of transformcoefficients for the coding block; determine a first coefficient groupsize for the first coefficient group based on a first position for thefirst coefficient group; determine a second coefficient group size forthe second coefficient group based on a second position for the secondcoefficient group; and include the determined first coefficient groupsize and the determined second coefficient group size in video data toencode the coding block.
 33. The device of claim 32, wherein the firstposition is associated with a high frequency domain and the secondposition is associated with a low frequency domain, wherein the firstcoefficient group size is larger than the second coefficient group size,and wherein the second coefficient group size is greater than or equalto 4×4.
 34. The device of claim 32, wherein the first position islocated in the top left portion of the coding block and the secondposition is located in the bottom right portion of the coding block. 35.The device of claim 32, wherein the coding block comprises a thirdcoefficient group associated with a third set of transform coefficientsfor the coding block, and wherein the processor is configured to: obtaina third coefficient group size for the third coefficient group based ona third position for the third coefficient group, wherein the thirdposition is located between the first position and the second position;and include the determined third coefficient group size to encode thecoding block.
 36. The device of claim 32, wherein the first position isassociated with a low frequency domain and the second position isassociated with a high frequency domain, wherein the second coefficientgroup size is larger than the first coefficient group size, and whereinthe first coefficient group size is greater than or equal to 4×4.